package com.xj.algorithm.leetcode;

/**
 * 最后一个单词的长度
 */
public class L58_字符串中最后一个单词的长度 {

    /**
     * 给定一个仅包含大小写字母和空格 ' ' 的字符串，返回其最后一个单词的长度。
     *
     * 如果不存在最后一个单词，请返回 0 。
     *
     * 说明：一个单词是指由字母组成，但不包含任何空格的字符串。
     *
     * 示例:
     *
     * 输入: "Hello World"
     * 输出: 5
     */

    public static void main(String[] args) {
        System.out.println(lengthOfLastWordGood("Hello World"));
        System.out.println(lengthOfLastWordGood("a "));
        System.out.println(lengthOfLastWordGood(" "));
    }

    //自己的解法：先清空两边空格，再逐个的判断是否是最后1个单词
    public static int lengthOfLastWord(String s) {
        s=s.trim();
        int count=0;
        int length=s.length();

        for (int i=0;i<length;i++){
            if(" ".equals(s.substring(i,i+1))){
                count=0;
            }else{
                count++;
            }
        }
        return count;
    }

    //自己的解法2：拆分成数组,注意空数组
    public static int lengthOfLastWordBeauty(String s) {
        String[] arr=s.split(" ");
        int length=arr.length;
        return length==0?0:arr[length-1].length();
    }

    //精彩解法：倒着找空格
    public static int lengthOfLastWordGood(String s) {
        int end = s.length() - 1;
        //过滤空格
        while(end >= 0 && s.charAt(end) == ' ') {
            end--;
        }
        //全部是空格
        if(end < 0){
            return 0;
        }
        //继续过滤空格
        int start = end;
        while(start >= 0 && s.charAt(start) != ' ') {
            start--;
        }
        return end - start;
    }

}
